home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Pascal Super Library
/
Pascal Super Library (CW International)(1997).bin
/
LIBRARY
/
PRUS101
/
FVARCONV.DOK
< prev
next >
Wrap
Text File
|
1994-07-20
|
26KB
|
639 lines
/////////////////////\\\\\\\\\\\\\\\\\\\\\\\
Dokumentation zur FIDO Unit FVARCONV
\\\\\\\\\\\\\\\\\\\\\///////////////////////
RELEASE 1.04
^^^^^^^^^^^^
=========================================================================
Autor: Orazio Czerwenka, 2:2450/540.55 @ FidoNet, St.Augustin, 14.06.1994
=========================================================================
1. Variablen-Konvertierung, Bits 'n Bytes:
------------------------------------------
In der Unit FVARCONV.PAS werden Routinen für die Konvertierung
von Variablen in solche anderen Typs bereitgestellt sowie Low
Level Funktionen zur Manipulation einzelner Bits und verwandte
Routinen.
Dies ist eine Low Level Unit. Sie benötigt keinerlei Routinen
anderer Units, mit Ausnahme der in Turbo Pascals (6.0 oder
höher) Unit-Library TURBO.TPL enhaltenen Standard-Units.
2. Kurzbeschreibung:
--------------------
BitIsSet ........ überprüft ob ein bestimmtes Bit innerhalb
einer Variablen des Typs Byte gesetzt ist.
BitsAreSet ...... überprüft ob die Summe verschiedener Bits in
einer Variablen des Typs Byte gesetzt ist.
BooleToggle ..... ändert den Wert einer Variablen des Typs
Boolean in ihr Gegenteil.
DByte2Word ...... DByte2Word macht aus zwei Byte die als hi und
lo eines words übergeben werden eine Variable
des Typs Word, so daß die Bytes als hi und lo
des words abgefragt werden können
Dec2Bin ......... konvertiert Dezimalzahlen in einen numeri-
schen String binären Formats.
Dec2Hex ......... konvertiert Dezimalzahlen in einen numeri-
schen String hexadezimalen Formats.
Dec2Oct ......... konvertiert Dezimahlzahlen in einen numeri-
schen String oktalen Formats.
DWord2LongInt .. erzeugt aus dem lower und upper word eines
DWord eine Variable des Typs LongInt.
LinearAddr ...... ermittelt die lineare Speicheradresse auf die
ein als Parameter übergebener Pointer zeigt
und liefert diese als Variable des Typs
LongInt zurück.
LongInt2DWord ... konvertiert eine Variable des Typs LongInt
in zwei Variablen des Typs Word, von denen
die erste das lower, die zweite das upper
word eines DWords darstellen.
LongInt2Str ..... wandelt unter Verwendung von TPs Standard-
funktion STR eine Variable des Typs LongInt
in einen numerischen String um.
NumStrValue ..... wandelt unter Verwendung von TPs Standard-
Funktion VAL einen numerischen String in ei-
ne Variable des Typs Integer um.
ResetBit ........ setzt ein bestimmtes Bit in einer Variablen
des Typs Byte zurück.
SetBit .......... setzt ein bestimmtes Bit in einer Variablen
des Typs Byte.
ToggleBit ....... 'toggelt' ein besimmtes Bit in einer Variablen
des Typs Byte.
3. Detaillierte Beschreibung:
-----------------------------
===============================================================
BitIsSet
---------------------------------------------------------------
ERSTAUTOR ... General Pascal FAQ as contained in SWAG
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 22.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... überprüft ob ein bestimmtes Bit in einer
Variablen des Typs Byte gesetzt ist.
DEKLARATION ... function BitIsSet(y,i:byte):Boolean
PARAMETER ... i - das gesuchte Bit.
y - das zu überprüfende Byte.
ERGEBNIS ... TRUE - wenn Bit i in Byte y gesetzt ist.
FALSE - wenn Bit i in Byte y nicht gesetzt
ist.
===============================================================
BitsAreSet
---------------------------------------------------------------
ERSTAUTOR ... Jürgen Gehlen (PCGo! 5/94, S. 70)
ERSTDATUM ... 22.05.1990 LETZTE ÄNDERUNG ... 22.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... überprüft ob die Summe verschiedener Bits in
einer Variablen des Typs Byte enthalten sind.
DEKLARATION ... function BitsAreSet(y,i:byte):Boolean
PARAMETER ... i - Summe der Bits
y - das zu überprüfende Byte
ERGEBNIS ... TRUE - wenn die Summe der Bits i in Byte y
enthalten ist
FALSE - wenn die Summe der Bits i in Byte y
nicht enthalten ist
===============================================================
BooleToggle
---------------------------------------------------------------
ERSTAUTOR ... Orazio Czerwenka, 2:2450/540.55 @ FidoNet
ERSTDATUM ... 19.12.1993 LETZTE ÄNDERUNG ... 20.12.1993
---------------------------------------------------------------
BESCHREIBUNG ... ändert den Wert einer Variablen des Typs
Boolean in ihr Gegenteil.
DEKLARATION ... function BooleToggle(toggle:Boolean):Boolean
PARAMETER ... toggle - die zu verändernde Variable
ERGEBNIS ... TRUE - wenn toggle zuvor false war.
FALSE - wenn toggle zuvor true war.
===============================================================
DByte2Word
---------------------------------------------------------------
ERSTAUTOR ... Orazio Czerwenka, 2:2450/540.55 @ FidoNet
ERSTDATUM ... 14.06.1994 LETZTE ÄNDERUNG ... 14.06.1994
---------------------------------------------------------------
BESCHREIBUNG ... macht aus zwei Byte die als hi und lo eines
words übergeben werden eine Variable des Typs
Word, so daß die Bytes als hi und lo des
words abgefragt werden können
DEKLARATION ... function DByte2Word(hi,lo:byte): Word;
PARAMETER ... hi - das als hi(word) zu übergebende byte
lo - das als lo(word) zu übergebende byte
ERGEBNIS ... eine Variable des Typs word, die die Para-
meter hi und lo als hi(word) und lo(word)
zur Verfügung stellt
===============================================================
Dec2Bin
---------------------------------------------------------------
ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... konvertiert eine Dezimalzahl des Typs LongInt
in einen numerischen String binären Formats.
DEKLARATION ... function Dec2Bin(d:LongInt;n:Byte):String
PARAMETER ... d - zu konvertierende Variable des Typs
LongInt.
n - Länge des auszugebenden Strings.
ERGEBNIS ... ein numerischer String binären Formats.
===============================================================
Dec2Hex
---------------------------------------------------------------
ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... konvertiert eine Dezimalzahl des Typs LongInt
in einen numerischen String hexadezimalen
Formats.
DEKLARATION ... function Dec2Hex(d:LongInt):String;
PARAMETER ... d - zu konvertierende Variable des Typs
LongInt.
ERGEBNIS ... ein numerischer String hexadezimalen Formats.
===============================================================
Dec2Oct
---------------------------------------------------------------
ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... konvertiert eine Dezimalzahl des Typs LongInt
in einen numerischen String oktalen Formats.
DEKLARATION ... function Dec2Oct(d:LongInt):String
PARAMETER ... d - zu konvertierende Variable des Typs
LongInt.
ERGEBNIS ... ein numerischer String oktalen Formats.
===============================================================
DWord2LongInt
---------------------------------------------------------------
ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... erzeugt aus dem lower und upper word eines
DWord eine Variable des Typs LongInt.
DEKLARATION ... procedure
DWord2LongInt(lower,upper: Word; Var l: LongInt)
PARAMETER ... l - zu erzeugende Variable des Typs
LongInt.
lower - das lower word des DWords
upper - das upper word der DWords
ERGEBNIS ... die übergebenen Variablen des Typs Word lower
und upper werden als Variable des Typs
LongInt zurückgeliefert.
===============================================================
LinearAddr
---------------------------------------------------------------
ERSTAUTOR ... Stefan Frings, 2:2440/210.12 @ FidoNet
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 27.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... ermittelt die lineare Speicheradresse auf die
ein als Parameter übergebener Pointer zeigt
und liefert diese als Variable des Typs
LongInt zurück.
USES ... interne Variable des Type Pt, der in FVARCONV
im Implementationsteil definiert ist.
DEKLARATION ... function LinearAddr(p:pointer):LongInt;
PARAMETER ... p - der Pointer der auf die zu ermittelnde
Speicheradresse zeigt.
ERGEBNIS ... die lineare Adresse wird als Variable des
Typs LongInt zurückgegeben.
===============================================================
LongInt2DWord
---------------------------------------------------------------
ERSTAUTOR ... Peter Schuette, 2:2452/117.19 @ FidoNet
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 17.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... konvertiert eine Variable des Typs LongInt in
zwei Variablen des Typs Word, von denen eine
das lower, die andere das upper word eines
DWords darstellt.
DEKLARATION ... procedure
LongInt2DWord(l:LongInt; Var lower,upper:Word)
PARAMETER ... l - zu konvertierende Variable des Typs
LongInt.
lower - das lower word des DWords
upper - das upper word der DWords
ERGEBNIS ... die übergebenen Variablen des Typs Word lower
und upper werden als das lower und upper word
eines DWords zurückgeliefert.
===============================================================
LongInt2Str
---------------------------------------------------------------
ERSTAUTOR ... Orazio Czerwenka, 2:2450/540.55 @ FidoNet
ERSTDATUM ... 20.11.1993 LETZTE ÄNDERUNG ... 21.12.1993
---------------------------------------------------------------
BESCHREIBUNG ... konvertiert eine Variable des Typs LongInt in
einen numerischen String dezimalen Formats.
erlaubt auch die Übergabe von Variablen der
Typen Byte, Word, ShortInt und Integer.
DEKLARATION ... function LongInt2Str (l:LongInt):String
ERGEBNIS ... eine Variable des Typs String.
===============================================================
NumStrValue
---------------------------------------------------------------
ERSTAUTOR ... Orazio Czerwenka, 2:2450/540.55 @ FidoNet
ERSTDATUM ... 04.12.1993 LETZTE ÄNDERUNG ... 22.12.1993
---------------------------------------------------------------
BESCHREIBUNG ... konvertiert einen numerischen String in eine
Variable des Typs Integer.
DEKLARATION ... function NumStrValue (strName:string):Integer
ERGEBNIS ... eine Variable des Typs Integer.
===============================================================
ResetBit
---------------------------------------------------------------
ERSTAUTOR ... General Pascal FAQ as contained in SWAG
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 22.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... setzt ein bestimmtes Bit in einer Variablen
des Typs Byte zurück.
DEKLARATION ... procedure ResetBit(var y,i:byte)
PARAMETER ... i - das zurück zu setzende Bit.
y - das zu ändernde Byte.
ERGEBNIS ... liefert das veränderte Byte zurück.
===============================================================
SetBit
---------------------------------------------------------------
ERSTAUTOR ... General Pascal FAQ as contained in SWAG
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 22.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... setzt ein bestimmtes Bit in einer Variablen
des Typs Byte
DEKLARATION ... procedure SetBit(var y,i:byte)
PARAMETER ... i - das zu setzende Bit.
y - das zu ändernde Byte.
ERGEBNIS ... liefert das veränderte Byte zurück.
===============================================================
ToggleBit
---------------------------------------------------------------
ERSTAUTOR ... General Pascal FAQ as contained in SWAG
ERSTDATUM ... ??.??.19?? LETZTE ÄNDERUNG ... 22.05.1994
MODIFIKATION ... Orazio Czerwenka
---------------------------------------------------------------
BESCHREIBUNG ... 'toggelt' ein bestimmtes Bit in einer
Variablen des Typs Byte.
DEKLARATION ... procedure ToggleBit(var y,i:byte)
PARAMETER ... i - das zu 'toggelnde' Bit.
y - das zu ändernde Byte.
ERGEBNIS ... liefert das veränderte Byte zurück.
4. Beispiele:
-------------
===============================================================
BitIsSet
---------------------------------------------------------------
BitIsSet(1,0); { ergibt TRUE = das Bit 0 ist in einem Byte
mit dem Wert 1 gesetzt }
BitIsSet(2,5); { ergibt FALSE = das Bit 5 ist in einem Byte
mit dem Wert 2 nicht gesetzt }
===============================================================
BitsAreSet
---------------------------------------------------------------
BitsAreSet(6,2); { ergibt TRUE }
BitsAreSet(6,3); { ergibt FALSE }
===============================================================
BooleToggle
---------------------------------------------------------------
var
b : boolean;
begin
b:= false;
writeln(BooleToggle(b)); { Ausgabe = TRUE }
end.
{ ... oder ... }
var
b : boolean;
begin
b:= true;
b:= BooleToggle(b);
writeln(b); { Ausgabe = FALSE }
end.
===============================================================
DByte2Word
---------------------------------------------------------------
var
h,l:byte;
w :word;
begin
h:= 25; l:= 80;
w:= DByte2Word(h,l);
writeln(hi(w),' ',lo(w)); { ergibt: 25 80 }
end.
===============================================================
Dec2Bin
---------------------------------------------------------------
Dec2Bin(3,3); { ergibt '011'; }
Dec2Bin(2,4); { ergibt '0010'; }
===============================================================
Dec2Hex
---------------------------------------------------------------
Dec2Hex(255); { ergibt 'FF'; }
===============================================================
Dec2Oct
---------------------------------------------------------------
Dec2Oct(8); { ergibt '10'; }
Dec2Oct(16); { ergibt '20'; }
===============================================================
DWord2LongInt
---------------------------------------------------------------
var
i : LongInt;
begin
DWord2LongInt(65513,65535,i);
writeln(i);
end. { ergibt -23 }
===============================================================
LinearAddr
---------------------------------------------------------------
var
test : word absolute $0400:$0045;
begin
writeln(Dec2Hex(LinearAddr(Ptr(seg(test),ofs(test)))));
end.
{ ergibt: 4045 = $04045 = $0400:$0045 }
===============================================================
LongInt2DWord
---------------------------------------------------------------
var
l, u : word;
begin
LongInt2DWord(-23,l,u);
writeln(l,' ',u);
end. { ergibt '65513 65535' }
===============================================================
LongInt2Str
---------------------------------------------------------------
LongInt2Str(-23); { ergibt '-23' }
===============================================================
NumStrValue
---------------------------------------------------------------
NumStrValue('99'); { ergibt 99; }
===============================================================
SetBit
---------------------------------------------------------------
var
i,
y : byte;
begin
i:= 2;
y:= 8;
writeln(y); {ergibt 8}
SetBit(y,i); {setzt Bit 2 (Wert 4)}
writeln(y); {ergibt 12}
end.
===============================================================
ResetBit
---------------------------------------------------------------
var
i,
y : byte;
begin
i:= 2;
y:= 12;
writeln(y); {ergibt 12}
ResetBit(y,i); {setzt Bit 2 zurück (Wert 4)}
writeln(y); {ergibt 8}
end.
===============================================================
ToggleBit
---------------------------------------------------------------
var
i,
y : byte;
begin
i:= 2;
y:= 12;
writeln(y); {ergibt 12}
ToggleBit(y,i); {setzt Bit 2 zurück (Wert 4)}
writeln(y); {ergibt 8}
ToggleBit(y,i); {setzt Bit 2 (Wert 4)}
writeln(y); {ergibt 12}
end.
5. History:
-----------
Neuerungen nach Release ...
---------------------------
... 1.02: - DByte2Word - DByte2Word macht aus zwei Byte die als
hi und lo eines words übergeben werden
eine Variable des Typs Word, so daß die
Bytes als hi und lo des words abgefragt
werden können
... 1.01: - LinearAddr - ermittelt die lineare Speicheradresse
auf die ein als Parameter übergebener
Pointer zeigt und liefert diese als
Variable des Typs LongInt zurück.
... 1.00: - BitIsSet - überprüft ob ein bestimmtes Bit in
einer Variablen des Typs Byte gesetzt
ist.
BooleToggle - erlaubt das 'toggeln' von Variablen des
Typs Boolean.
Dec2Bin - konvertiert Dezimalzahlen in einen nu-
merischen String binären Formats.
Dec2Hex - konvertiert Dezimalzahlen in einen nu-
merischen String hexadezimalen Formats.
Dec2Oct - konvertiert Dezimahlzahlen in einen nu-
merischen String oktalen Formats.
DWord2LongInt - erzeugt aus dem lower und upper word
eines DWord eine Variable des Typs
LongInt.
LongInt2DWord - konvertiert eine Variable des Typs
LongInt in zwei Variablen des Typs
Word, von denen die erste das lower,
die zweite das upper word eines DWords
darstellen.
ResetBit - setzt ein bestimmtes Bit in einer
Variablen des Typs Byte zurück.
SetBit - setzt ein bestimmtes Bit in einer
Variablen des Typs Byte.
ToggleBit - 'toggelt' ein besimmtes Bit in einer
Variablen des Typs Byte.
Änderungen nach Release ...
---------------------------
... 1.00: - BitsAreSet - die Reihenfolge der Übergabe der Para-
meter i und y wurde den übrigen bit-
orientierten Funktionen der Unit (aus-
nahmsweise) angepaßt.
==========================================================================
//////////////////////\\\\\\\\\\\\\\\\\\\\\\\
Ende der Dokumentation zur FIDO Unit FVARCONV
\\\\\\\\\\\\\\\\\\\\\\///////////////////////